package com.feige.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.feige.pojo.User;
import com.feige.pojo.dto.ForgetPwd;
import com.feige.pojo.dto.FriendDto;
import com.feige.pojo.dto.PwdDto;
import com.feige.pojo.vo.ChatUserVo;
import com.feige.result.AjaxResult;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author feige
 * @since 2020-11-20
 */
public interface UserService extends IService<User> {

    /**
     * 查询用户好友
     * @param pageNum
     * @param userId
     * @return
     */
    List<ChatUserVo> getChatUser(Integer pageNum, String userId);

    /**
     * 通过名字查询用户
     * @param name
     * @param userId
     * @return
     */
    List<ChatUserVo> getChatUserByName(String name,String userId);

    /**
     * 查询用户好友总数
     * @param userId
     * @return
     */
    int getChatUserTotal(String userId);

    /**
     *  添加好友
     * @author: feige
     * @date: 2021/3/3 11:21
     * @param	friendDto
     * @return: boolean
     */
    boolean addFriend(FriendDto friendDto);

    /**
     * 删除好友
     * @param friendDto 好友
     * @return
     */
    boolean deleteFriend(FriendDto friendDto);

    /**
     * 加入一个班级
     * @param userId
     * @param clazzId
     * @return
     */
    AjaxResult jointClazz(String userId, String clazzId);

    /**
     * 退出班级
     * @param userId
     * @param clazzId
     * @return
     */
    AjaxResult exitClazz(String userId,String clazzId);


    /**
     * 获取对应班级的用户ID
     * @param clazzId 班级ID
     * @param userId 班级创建者ID
     * @return
     */
    List<Object> getUserIdsByClazzId(String clazzId,String userId);

    /**
     * 修改密码
     * @param userId 用户ID
     * @param pwdDto 密码dto
     * @return
     */
    AjaxResult changePwd(String userId, PwdDto pwdDto);

    /**
     * 忘记密码
     * @param forgetPwd 密码dto
     * @return
     */
    AjaxResult forgetPwd(ForgetPwd forgetPwd);

    /**
     * 检查邮箱是否已授予教师权限
     * @param email
     * @return
     */
    String checkEmailAuthorize(String email);
}
